package org.xx.armory.db;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * SQL相关的操作。
 *
 * @param <R>
 *         SQL操作返回结果的类型。
 */
@FunctionalInterface
public interface SqlAction<R> {
    /**
     * 执行SQL相关的操作。
     *
     * @param connection
     *         用于执行SQL操作的数据库连接。
     * @return 操作的结果。
     * @throws IllegalArgumentException
     *         如果参数{@code connection}是{@code null}。
     * @throws SQLException
     *         如果执行SQL操作时出错。
     */
    R call(Connection connection)
            throws SQLException;
}
